home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 122
/
122side2.d64
/
xcalc 22.s
< prev
next >
Wrap
Text File
|
2022-08-29
|
11KB
|
920 lines
.org 2048
;.mem
.obj "@0:xcalc 22"
zp = 97
zpc = 99
zpe = 101
zp2 = 247
chrout = $ffd2
getin = $ffe4
plot = $fff0
curpos = 211
lda #0
sta 53281
sta 53280
lda #1
sta mflag
jsr startm
start =*
jsr titlescreen
- jsr getin
sta temp
jsr checkm
lda temp
beq -
cmp #49
bcc -
cmp #57
bcs -
cmp #56
bne +
jsr stopm
lda #23
sta 53272
rts ; rem loadstar
+ cmp #55
bne +
jsr toggle
jmp -
+ sec
sbc #49
sta puzzle
jsr screen1
lda <1199
sta zpc
lda >1199
sta zpc+1
lda #0
sta row
sta colm
jsr printpuzzle
jsr printkeys
input =*
ldy #0
lda (zpc),y
eor #128
sta (zpc),y
jsr delay
lda (zpc),y
eor #128
sta (zpc),y
jsr delay
jsr checkm
jsr getin
beq input
cmp #29
bne +
jsr right
jmp input
+ cmp #157
bne +
jsr left
jmp input
+ cmp #140
bne +
jsr hardcopy
jmp input
+ cmp #17
bne +
jsr down
jmp input
+ cmp #145
bne +
jsr up
jmp input
+ cmp #136
bne +
jmp hint
+ cmp #32
beq +
jmp s2
+ ldy #0
lda (zpc),y
cmp #32
bne ++
+ jmp input
+ sta temp
ldy #0
- lda 1756,y
cmp #32
beq +
iny
iny
cpy #17
bne -
+ lda temp
sta 1756,y
ldy #0
lda #32
sta (zpc),y
jmp input
s2 cmp #133;f1
bne +
jmp start
+ cmp #137;f2
bne +
jmp solutions
+ cmp #49
bcs +
jmp input
+ cmp #58
bcc s1
jmp input
s1 sta temp
ldy #0
lda (zpc),y
cmp #32
bne ++
ldy #0
- lda 1756,y
cmp temp
beq +
iny
cpy #17
bne -
jmp input
+ lda #32
sta 1756,y
ldy #0
lda temp
sta (zpc),y
+ jmp check
+ jmp input
hint =*
lda puzzle
asl
tax
lda answer,x
sta zpe
inx
lda answer,x
sta zpe+1
lda #0
sta counter
sta temp2
- cmp row
beq +
clc
lda temp2
adc #10
sta temp2
inc counter
lda counter
jmp -
+ lda colm
asl
asl
clc
adc temp2
tay
lda (zpe),y
jmp s1
up =*
jsr sub160
lda row
cmp #255
bne +
jsr add160
+ rts
down =*
jsr add160
lda row
cmp #3
bne +
jsr sub160
+ rts
add4 =*
clc
lda zpc
adc #4
sta zpc
lda zpc+1
adc #0
sta zpc+1
inc colm
rts
sub4 =*
sec
lda zpc
sbc #4
sta zpc
lda zpc+1
sbc #0
sta zpc+1
dec colm
rts
add80zp =*
clc
lda zp
adc #80
sta zp
lda zp+1
adc #0
sta zp+1
rts
add160 =*
clc
lda zpc
adc #160
sta zpc
lda zpc+1
adc #0
sta zpc+1
inc row
rts
sub160 =*
sec
lda zpc
sbc #160
sta zpc
lda zpc+1
sbc #0
sta zpc+1
dec row
rts
right =*
jsr add4
lda colm
cmp #3
bne +
jsr sub4
+ rts
left =*
jsr sub4
lda colm
cmp #255
bne +
jsr add4
+ rts
write =*
ldy #0
pla
sta zp
pla
sta zp+1
- inc zp
bne +
inc zp+1
+ lda (zp),y
beq +
jsr chrout
bne -
+ lda zp+1
pha
lda zp
pha
rts
delay =*
ldx #25
- ldy #0
- dey
bne -
dex
bne --
rts
ringbell =*
lda mflag
beq +
rts
+ lda #21
sta 54296
lda #9
sta 54277
lda #0
sta 54278
lda #48
sta 54273
lda #32
sta 54276
lda #33
sta 54276
rts
screen1 =*
jsr write
.byte 147,156,18
.asc " cross calc # "
.byte 13,13,154,146
.asc " "
.byte 176,96,178,96,178,96,178,96,178,96,178,96,96,174,13
.asc " {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--}"
.byte 13
.asc " {CBM-Q}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{CBM-X}"
.byte 13
.asc " {SHIFT--} {SHIFT--}{CBM-+}{SHIFT--} {SHIFT--}{CBM-+}{SHIFT--} {SHIFT--}"
.byte 13
.asc " {CBM-Q}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}"
.byte 174,13
.asc " {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--}"
.byte 13
.asc " {CBM-Q}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}{CBM-X}"
.byte 13
.asc " {SHIFT--} {SHIFT--}{CBM-+}{SHIFT--} {SHIFT--}{CBM-+}{SHIFT--} {SHIFT--}"
.byte 13
.asc " {CBM-Q}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-+}{SHIFT-*}{SHIFT-*}"
.byte 174,13
.asc " {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--} {SHIFT--}"
.byte 13
.asc " "
.byte 171,96,177,178,123,96,177,178,123,96,177,178,96,189,13
.asc " {SHIFT--} {SHIFT--}{SHIFT--} {SHIFT--}{SHIFT--} {SHIFT--}"
.byte 13
.asc " "
.byte 173,96,96,189,173,96,96,189,173,96,96,189,13
.byte 13,13,13,13,13,13,18
.asc " f1=exit f7=hint f2=soln f8=print "
.byte 0
lda puzzle
clc
adc #128+49
sta 1050
rts
printpuzzle =*
lda puzzle
asl
tax
lda defs,x
sta zpe
inx
lda defs,x
sta zpe+1
lda <1199
sta zp
lda >1199
sta zp+1
lda <1199+54272
sta zp2
lda >1199+54272
sta zp2+1
lda #0
sta counter
ldx #0
- ldy #0
- lda (zpe,x)
cmp @"{SHIFT--}"
beq ++
sta (zp),y
cmp #32
bne +
lda #1
sta (zp2),y
jmp ++
+ lda #13
sta (zp2),y
+ jsr add1zpe
iny
cpy #14
bne -
jsr add80zp
jsr add80zp2
inc counter
lda counter
cmp #6
bne --
rts
printkeys =*
lda puzzle
asl
tax
lda keys,x
sta zpe
inx
lda keys,x
sta zpe+1
lda <1756
sta zp
lda >1756
sta zp+1
lda <1756+54272
sta zp2
lda >1756+54272
sta zp2+1
ldx #0
ldy #0
- lda (zpe,x)
sta (zp),y
lda #1
sta (zp2),y
+ jsr add1zpe
iny
iny
cpy #18
bne -
rts
check =*
lda puzzle
asl
tax
lda answer,x
sta zpe
inx
lda answer,x
sta zpe+1
lda <1199
sta zp
lda >1199
sta zp+1
lda #0
sta counter
ldx #0
- ldy #0
- lda (zpe,x)
cmp (zp),y
beq +
jmp input
+ jsr add1zpe
iny
cpy #10
bne -
jsr add80zp
jsr add80zp
inc counter
lda counter
cmp #3
bne --
solve =*
lda #1
sta counter
- sta 646
ldx #22
ldy #0
clc
jsr plot
jsr write
.byte 18
.asc " solved!!! "
.byte 0
lda counter
sta 56295
jsr ringbell
jsr delay
jsr delay
jsr delay
jsr delay
inc counter
lda counter
cmp #15
bne -
getf1 =*
ldx #22
ldy #0
clc
jsr plot
jsr write
.byte 18,154
.asc " press f1 "
.byte 0
- jsr getin
sta temp
jsr checkm
lda temp
cmp #133
bne -
jmp start
solutions =*
lda puzzle
asl
tax
lda answer,x
sta zpe
inx
lda answer,x
sta zpe+1
lda <1199
sta zp
lda >1199
sta zp+1
lda <1199+54272
sta zp2
lda >1199+54272
sta zp2+1
lda #0
sta counter
ldx #0
- ldy #0
- lda (zpe,x)
cmp @"1"
bcc +
cmp #58
bcs +
clc
adc #128
sta (zp),y
lda #10
sta (zp2),y
+ jsr add1zpe
iny
cpy #10
bne -
jsr add80zp
jsr add80zp2
jsr add80zp
jsr add80zp2
inc counter
lda counter
cmp #3
bne --
jmp getf1
add80zp2 =*
clc
lda zp2
adc #80
sta zp2
lda zp2+1
adc #0
sta zp2+1
rts
add1zpe =*
clc
lda zpe
adc #1
sta zpe
lda zpe+1
adc #0
sta zpe+1
rts
counter .byte 0
flag .byte 1
temp .word 0
tempc .byte 0
temp2 .byte 0
puzzle .byte 0
cflag .byte 0
row .byte 0
colm .byte 0
defs .word def1,def2,def3,def4,def5,def6
answer .word hint1,hint2,hint3,hint4,hint5,hint6
keys .word key1,key2,key3,key4,key5,key6
key1 .scr "333468899"
key2 .scr "133345679"
key3 .scr "112234499"
key4 .scr "122256689"
key5 .scr "224456799"
key6 .scr "145666779"
def1 .scr " {SHIFT--}*{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}63{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}/{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--} "
.scr " {SHIFT--}*{SHIFT--} {SHIFT--}/{SHIFT--} {SHIFT--} 8{SHIFT--} "
.scr "/{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--} "
.scr " {SHIFT--}*{SHIFT--} {SHIFT--}+{SHIFT--} {SHIFT--}22{SHIFT--} "
.scr " 4{SHIFT--}{SHIFT--} 6{SHIFT--}{SHIFT--}16{SHIFT--} "
def2 .scr " {SHIFT--}+{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--}12{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--} "
.scr " {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--} 9{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}{SHIFT-*}{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}*{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}31{SHIFT--} "
.scr "22{SHIFT--}{SHIFT--} 4{SHIFT--}{SHIFT--}16{SHIFT--} "
def3 .scr " {SHIFT--}*{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--} 8{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--} "
.scr " {SHIFT--}*{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--} 7{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}+{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--} 8{SHIFT--} "
.scr "22{SHIFT--}{SHIFT--} 4{SHIFT--}{SHIFT--}16{SHIFT--} "
def4 .scr " {SHIFT--}*{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--} 3{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}{SHIFT-*}{SHIFT--}{CBM-+}{SHIFT--}{SHIFT-*}{SHIFT--} "
.scr " {SHIFT--}+{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--}78{SHIFT--} "
.scr "*{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}/{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--} 1{SHIFT--} "
.scr "20{SHIFT--}{SHIFT--} 2{SHIFT--}{SHIFT--} 3{SHIFT--} "
def5 .scr " {SHIFT--}+{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}11{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}+{SHIFT--} {SHIFT--}+{SHIFT--} {SHIFT--}11{SHIFT--} "
.scr "+{SHIFT--}{CBM-+}{SHIFT--}{SHIFT-*}{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--}16{SHIFT--} "
.scr "22{SHIFT--}{SHIFT--} 6{SHIFT--}{SHIFT--}32{SHIFT--} "
def6 .scr " {SHIFT--}+{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}14{SHIFT--} "
.scr "*{SHIFT--}{CBM-+}{SHIFT--}/{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--} "
.scr " {SHIFT--}+{SHIFT--} {SHIFT--}*{SHIFT--} {SHIFT--}70{SHIFT--} "
.scr "{SHIFT-*}{SHIFT--}{CBM-+}{SHIFT--}+{SHIFT--}{CBM-+}{SHIFT--}*{SHIFT--} "
.scr " {SHIFT--}*{SHIFT--} {SHIFT--}{SHIFT-*}{SHIFT--} {SHIFT--}37{SHIFT--} "
.scr "30{SHIFT--}{SHIFT--} 8{SHIFT--}{SHIFT--}40{SHIFT--} "
hint1 .scr "9{SHIFT--}*{SHIFT--}8{SHIFT--}{SHIFT-*}{SHIFT--}9{SHIFT--}"
.scr "3{SHIFT--}*{SHIFT--}8{SHIFT--}/{SHIFT--}3{SHIFT--}"
.scr "3{SHIFT--}*{SHIFT--}6{SHIFT--}+{SHIFT--}4{SHIFT--}"
hint2 .scr "9{SHIFT--}+{SHIFT--}3{SHIFT--}*{SHIFT--}1{SHIFT--}"
.scr "6{SHIFT--}{SHIFT-*}{SHIFT--}3{SHIFT--}*{SHIFT--}3{SHIFT--}"
.scr "7{SHIFT--}*{SHIFT--}5{SHIFT--}{SHIFT-*}{SHIFT--}4{SHIFT--}"
hint3 .scr "4{SHIFT--}*{SHIFT--}1{SHIFT--}*{SHIFT--}2{SHIFT--}"
.scr "9{SHIFT--}*{SHIFT--}1{SHIFT--}{SHIFT-*}{SHIFT--}2{SHIFT--}"
.scr "9{SHIFT--}+{SHIFT--}3{SHIFT--}{SHIFT-*}{SHIFT--}4{SHIFT--}"
hint4 .scr "2{SHIFT--}*{SHIFT--}6{SHIFT--}{SHIFT-*}{SHIFT--}9{SHIFT--}"
.scr "8{SHIFT--}+{SHIFT--}5{SHIFT--}*{SHIFT--}6{SHIFT--}"
.scr "2{SHIFT--}/{SHIFT--}2{SHIFT--}*{SHIFT--}1{SHIFT--}"
hint5 .scr "6{SHIFT--}+{SHIFT--}9{SHIFT--}{SHIFT-*}{SHIFT--}4{SHIFT--}"
.scr "7{SHIFT--}+{SHIFT--}2{SHIFT--}+{SHIFT--}2{SHIFT--}"
.scr "9{SHIFT--}{SHIFT-*}{SHIFT--}5{SHIFT--}*{SHIFT--}4{SHIFT--}"
hint6 .scr "9{SHIFT--}+{SHIFT--}6{SHIFT--}{SHIFT-*}{SHIFT--}1{SHIFT--}"
.scr "4{SHIFT--}+{SHIFT--}6{SHIFT--}*{SHIFT--}7{SHIFT--}"
.scr "6{SHIFT--}*{SHIFT--}7{SHIFT--}{SHIFT-*}{SHIFT--}5{SHIFT--}"
titlescreen =*
jsr write
.byte 147,31,146,5,176
.asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
.byte 174
.byte 125,18,156
.asc " cross calc "
.byte 146,5,125
.byte 171
.asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
.byte 179
.byte 125,155,18
.asc " "
.byte 5,146,125
.byte 125,155,18
.asc " "
.byte 5,146,125
.byte 125,155,18
.asc " "
.byte 5,146,125
.byte 125,155,18
.asc " "
.byte 5,146,125
.byte 125,155,18
.asc " 1] puzzle #1 "
.byte 5,146,125
.byte 125,155,18
.asc " 2] puzzle #2 "
.byte 5,146,125
.byte 125,155,18
.asc " 3] puzzle #3 "
.byte 5,146,125
.byte 125,155,18
.asc " 4] puzzle #4 "
.byte 5,146,125
.byte 125,155,18
.asc " 5] p